package com.naml.a_thread;

/**
 * @author marin
 * @version 1.0
 * @date 2025/4/26 15:41
 * @desc 演示通过继承THread类创建线程
 */
@SuppressWarnings("all")
public class Thread01 {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.start();//实际是调用start0方法，由JVM调用。

        //说明：当main线程启动一个子线程，主线程并不会阻塞，会继续处理。
        for (int i = 0; i < 30; i++) {
            System.out.println(Thread.currentThread().getName() +":"+i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
        /**
         * 上述主线程结束了，子线程还在运行。
         * 只有所有的线程都结束了，进程就结束了。
         */
    }
}

class Cat extends Thread {

    /**
     * 这里的run方法实际上是实现了Runnable接口的run方法
     */
    @Override
    public void run() {
        for (int i = 1; i < 100; i++) {
            try {
                System.out.println(Thread.currentThread().getName()+":喵喵～我是"+i+"只笨猪。");
                Thread.sleep(1000);
                if (i == 80){
                    break;
                }
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}